// 模块模式
// 通过闭包隔离全局变量，实现了js的private和public

const moduleObj = (function () {
  var count = 0;

  return {
    publicVal: "1",
    add() {
      count++;
    },
    get() {
      console.log(count);
    },
  };
})();

console.log(moduleObj.publicVal);
moduleObj.add();
moduleObj.get();

// 将外部变量传入模块使用
const moduleObj2 = (function (window, $) {
  var count = 0;

  return {
    publicVal: "1",
    add() {
      count++;
    },
    get() {
      console.log(count);
    },
  };
})(window, "Jquery");
